/*-
* See the file LICENSE for redistribution information.
*
* Copyright (c) 2002-2006
* Sleepycat Software. All rights reserved.
*
* $Id: SingleItemLogEntry.java,v 1.1 2006/05/06 09:01:37 ckaestne Exp $
*/
package com.sleepycat.je.log.entry;
import java.nio.ByteBuffer;
import com.sleepycat.je.DatabaseException;
import com.sleepycat.je.log.LogReadable;
/**
* This class embodies log entries that have a single loggable item.
*/
public class SingleItemLogEntry implements LogEntry {
private Class logClass;
LogReadable item;
public SingleItemLogEntry(Class logClass) {
this.logClass = logClass;
}
/**
* @see LogEntry#readEntry
*/
public void readEntry(ByteBuffer entryBuffer,
int entrySize,
byte entryTypeVersion,
boolean readFullItem)
throws DatabaseException {
try {
item = (LogReadable) logClass.newInstance();
item.readFromLog(entryBuffer, entryTypeVersion);
} catch (IllegalAccessException e) {
throw new DatabaseException(e);
} catch (InstantiationException e) {
throw new DatabaseException(e);
}
}
/**
* @see LogEntry#dumpEntry
*/
public StringBuffer dumpEntry(StringBuffer sb, boolean verbose) {
item.dumpLog(sb, verbose);
return sb;
}
/**
* @see LogEntry#getMainItem
*/
public Object getMainItem() {
return item;
}
/**
* @see LogEntry#clone
*/
public Object clone()
throws CloneNotSupportedException {
return super.clone();
}
/**
* @see LogEntry#isTransactional
*/
public boolean isTransactional() {
return item.logEntryIsTransactional();
}
/**
* @see LogEntry#getTransactionId
*/
public long getTransactionId() {
return item.getTransactionId();
}
/**
* @return a new instance
*/
public LogEntry getNewInstance()
throws DatabaseException {
try {
return (LogEntry) logClass.newInstance();
} catch (InstantiationException e){
throw new DatabaseException(e);
} catch (IllegalAccessException e){
throw new DatabaseException(e);
}
}
}